This invention relates to methods, systems, and computer program products for communicating information between layers in a multi-layer software architecture.
Software architectures can include various layers. For example, a software architecture can include an application layer, an application server layer, and a database driver layer. Such layers can be implemented by different vendors. In some instances, the layers are implemented in a hierarchical fashion. The first layer communicates with the second layer and the second layer communicates with the third layer. Typically, the first and the third layer do not communicate.
When the third layer adds new functionality, the functionality does not immediately become available to the first layer. Vendors of the second layer need to implement an interface for the new functionality to make the functionality visible to the first layer. When making the functionality available to the first layer, the second layer adds additional value by adding other services. Thus, in most cases, the first layer does not want to directly use the third layer, rather the first layer prefers to go through the second layer to benefit from these services. However, the trade-off is that the first layer loses access to the additional functionality provided by the third layer when access to the functionality is not provided by the second layer.